#ifndef LOGGERMANAGER_H
#define LOGGERMANAGER_H

#include <QDebug>
#include "sqlitedatabase.h"
#include <QString>
#include <QFile>
#include <QTextStream>
#include <QMutex>

class LoggerManager
{
public:
    static LoggerManager& getInstance();

    void init();
    void logInfo(const QString& content);
    void logWarning(const QString& content);
    void logError(const QString& content);
    void logOperation(const QString& content);
    void logDebug(const QString& content);

    QString getLogFilePath(const QString& timestamp) const;

private:
    LoggerManager() = default;
    LoggerManager(const LoggerManager&) = delete;
    LoggerManager& operator=(const LoggerManager&) = delete;

    void createNewLogFile();
    void checkLogFileSize();
    void logToDatabase(const QString& type, const QString& timestamp);
    void logToFile(const QString& level, const QString& content);

    QString logDirPath;  // 日志目录路径
    SQLiteDatabase* db;  // 操作数据库的变量
    QString currentLogFilePath;  // 当前日志文件路径
    QString currentLogFileTimestamp;  // 当前日志文件时间戳
    QFile logFile;
    QTextStream logStream;
    QMutex logMutex;
};

// 定义全局内联函数
inline LoggerManager& Logger()
{
    return LoggerManager::getInstance();
}

#endif // LOGGERMANAGER_H
